#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<sys/types.h>

#define NUM 16

const char *myfile="./test_19_1";

int main()
{
  //为什么要创建子进程???
  //1.为了不影响父进程
  //2.因为我们想让父进程聚焦在读取数据，解析数据，指派执行代码的功能！ 
  //如果不创建，那么我们替换的进程只能是父进程，如果创建了，替换的进程就是子进程，而不影响父进程（为什么？）
 // while(1){
    //1.显示一个提示符：root@localhost#
    //2.获取用户输入的字符串，fgets，scanf。->ls -a -l
    //3.对字符串2进行解析
    //4.下面的代码
  
  char* const _env[NUM]={
    (char*)"MY_105_VAL=777773332222",
    NULL
  };
  
  pid_t id=fork();
    if(id==0)
    {

      //子进程
      //ls -a -l
      printf("子进程开始运行，pid: %d\n",getpid());
      sleep(3);
      
      char *const _argv[NUM]={
       (char*) "ls",
       (char*) "-a",
       (char*) "-l",
       (char*)"-i",
       NULL
      };
      
      
      execle(myfile,"test_19_1","-a",NULL,_env);
     // exel("/usr/bin/ls","ls","-a","-l",NULL);
    // execl("/usr/bin/ls",_argv);//不知道为啥，有问题
     // execlp("ls","ls","-a","-l",NULL);//必须已NULL结尾
      //execvp("ls",_argv);
      
      exit(1);
    }
    else{
      //父进程
      printf("父进程开始运行，ppid: %d\n",getppid());
      int status=0;
      pid_t id=waitpid(-1,&status,0);//阻塞等待
      if(id>0)
      {
        printf("wait success,exit code: %d\n",WEXITSTATUS(status));
      }
    }
  //}
  return 0;
}
